package com.eltsistemas.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import com.eltsistemas.modelo.Afastamento;
import com.eltsistemas.modelo.Autorizacao_Afastamento;
import com.eltsistemas.modelo.Autorizacao_Desligamento;
import com.eltsistemas.modelo.Autorizacao_Ferias;
import com.eltsistemas.modelo.Autorizacao_Funcionario;
import com.eltsistemas.modelo.Autorizacao_Salarial;
import com.eltsistemas.modelo.Desligamento;
import com.eltsistemas.modelo.Ferias;
import com.eltsistemas.modelo.Funcionario;
import com.eltsistemas.modelo.Salarial;

public class AutorizacaoDao {

	private Session session;
	
	public AutorizacaoDao(Session session)
	{
		this.session=session;
	}
	
	@SuppressWarnings("unchecked")
	public List<Autorizacao_Funcionario> autorizacao_FuncionarioList(Funcionario f)
	{
		Query query = this.session.createQuery("SELECT aut from Autorizacao_Funcionario as aut WHERE aut.funcionario.id=:idFuncionario");
		query.setLong("idFuncionario", f.getId());
		
		List<Autorizacao_Funcionario> aut_FuncionarioList = query.list();

		return aut_FuncionarioList;
	}
	
	@SuppressWarnings("unchecked")
	public List<Autorizacao_Afastamento> autorizacao_AfastamentoList(Afastamento afast)
	{
		Query query = this.session.createQuery("SELECT af from Autorizacao_Afastamento as af WHERE af.afastamento.id=:idAfastamento");
		query.setLong("idAfastamento", afast.getId());
		
		List<Autorizacao_Afastamento> aut_AfastamentoList = query.list();

		return aut_AfastamentoList;
	}
	
	@SuppressWarnings("unchecked")
	public List<Autorizacao_Desligamento> autorizacao_DesligamentoList(Desligamento d)
	{
		Query query = this.session.createQuery("SELECT aut from Autorizacao_Desligamento as aut WHERE aut.desligamento.id=:idDesligamento");
		query.setLong("idDesligamento", d.getId());
		
		List<Autorizacao_Desligamento> aut_DesligamentoList = query.list();

		return aut_DesligamentoList;
	}
	
	@SuppressWarnings("unchecked")
	public List<Autorizacao_Ferias> autorizacao_FeriasList(Ferias f)
	{
		Query query = this.session.createQuery("SELECT aut from Autorizacao_Ferias as aut WHERE aut.ferias.id=:idFerias");
		query.setLong("idFerias", f.getId());
		
		List<Autorizacao_Ferias> aut_FeriasList = query.list();

		return aut_FeriasList;
	}
	
	@SuppressWarnings("unchecked")
	public List<Autorizacao_Salarial> autorizacao_SalarialList(Salarial salarial)
	{
		Query query = this.session.createQuery("SELECT aut from Autorizacao_Salarial as aut WHERE aut.salarial.id=:idSalarial");
		query.setLong("idSalarial", salarial.getId());
		
		List<Autorizacao_Salarial> aut_SalarialList = query.list();

		return aut_SalarialList;
	}
	
	@SuppressWarnings("unchecked")
	public List<Autorizacao_Salarial> autorizacao_NivelSalarial(Long id_Funcionario)
	{
		StringBuilder consulta = new StringBuilder();
		consulta.append("SELECT MAX(aut.nivel) FROM Autorizacao_Salarial as aut WHERE ");
		consulta.append("aut.salarial.id= :id_salarial");
		
		Query query = this.session.createQuery(consulta.toString());
		
		List<Autorizacao_Salarial> aut_SalarialList = new ArrayList<>();
		
		aut_SalarialList = query.list();
		
		return aut_SalarialList;
	}
}
